package com.fy.fyspace.common.auth.model;

import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * 空间用户角色
 * 
 * @TableName spaceUserRole
 */
@TableName(value = "spaceuserrole")
@Data
@Slf4j
public class SpaceUserRole implements Serializable {
    /**
     *
     */
    @TableId
    private Long id;

    /**
     * 角色名称
     */
    private String roleName;

    /**
     * 角色描述
     */
    private String description;

    /**
     * 角色优先级(越大优先级越高）
     */
    private Long rolePriority;

    /**
     * 状态 0-正常 1-禁用
     */
    private Integer isDelete;

    /**
     * 创建时间
     */
    private Date createTime;

    /**
     * 更新时间
     */
    private Date updateTime;

    /**
     * 空间用户权限id集合
     */
    private String spaceUserPermissionIds;


    /**
     * 获取空间用户权限id集合
     * 
     * @return
     */
    public List<Long> getSpaceUserPermissionIds() {
        if (this.spaceUserPermissionIds == null || this.spaceUserPermissionIds.trim().isEmpty()) {
            log.debug("权限ID字符串为空");
            return null;
        }
        try {
            String trimmed = this.spaceUserPermissionIds.trim();
            // 处理可能的格式问题
            if (trimmed.startsWith("[") && trimmed.endsWith("]")) {
                List<Long> result = JSON.parseArray(trimmed, Long.class);
                log.debug("解析权限ID成功: {} -> {}", trimmed, result);
                return result;
            } else {
                log.warn("权限ID字符串格式不正确: {}", trimmed);
                return null;
            }
        } catch (Exception e) {
            log.error("解析权限ID字符串失败: {} -> {}", this.spaceUserPermissionIds, e.getMessage());
            return null;
        }
    }

    /**
     * 直接设置权限ID字符串
     * 
     * @param permissionIdsStr
     */
    public void setSpaceUserPermissionIdsStr(String permissionIdsStr) {
        this.spaceUserPermissionIds = permissionIdsStr;
    }

    /**
     * 获取原始权限ID字符串
     * 
     * @return
     */
    public String getSpaceUserPermissionIdsStr() {
        return this.spaceUserPermissionIds;
    }

    @TableField(exist = false)
    private static final long serialVersionUID = 1L;
}